package 简单.模拟;

/**
 * 给你一个字符串 text ，该字符串由若干被空格包围的单词组成。每个单词由一
 * 个或者多个小写英文字母组成，并且两个单词之间至少存在一个空格。题目测
 * 试用例保证 text 至少包含一个单词 。
 * 请你重新排列空格，使每对相邻单词之间的空格数目都 相等 ，并尽可能 最大
 * 化 该数目。如果不能重新平均分配所有空格，请 将多余的空格放置在字符串末
 * 尾 ，这也意味着返回的字符串应当与原 text 字符串的长度相等。
 * 返回 重新排列空格后的字符串 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/rearrange-spaces-between-words
 */
public class 重新排列单词间的空格_1592 {

    public static void main(String[] args) {

        System.out.println(reorderSpaces("  this   is  a sentence "));

    }

    public static String reorderSpaces(String text) {
        StringBuilder stringBuilder = new StringBuilder();
        int total = 0;
        for (int i = 0; i < text.length(); i++) {
            if (' ' == text.charAt(i)) {
                total++;
            }
        }
        String[] s = text.trim().split("\\s+");
        if (s.length == 1) {
            stringBuilder.append(s[0]);
            for (int i = 0; i < total; i++) {
                stringBuilder.append(" ");
            }
            return stringBuilder.toString();
        }

        int intervalTotal = total / (s.length - 1);
        for (int i = 0; i < s.length - 1; i++) {
            stringBuilder.append(s[i]);
            for (int j = 0; j < intervalTotal; j++) {
                stringBuilder.append(" ");
            }
        }

        stringBuilder.append(s[s.length - 1]);
        for (int i = 0; i < total % (s.length - 1); i++) {
            stringBuilder.append(" ");
        }
        return stringBuilder.toString();
    }

}
